﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;

namespace  RzCorportativo.Views.Cadastros
{
    [Lib.Permissao(HasValidation = true)]
    public partial class Usuario : BasePage
    {
        private object DataSource
        {
            get { return this.Session["$HistoricoPaciente$DataSource"]; }
            set { this.Session["$HistoricoPaciente$DataSource"] = value; }
        }

        //protected RzCorportativo.Lib.Consulta GetItem(object item)
        //{
        //if (!(item is RzCorportativo.Lib.Consulta))
        //    return new RzCorportativo.Lib.Consulta();
        //return item as RzCorportativo.Lib.Consulta;
        //}

        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.IsPostBack)
                return;
            if ("nc".Equals(this.Request["op"]))
            {
                Alert alert = new Alert("erroGeral", this);
                alert.Add("sucessoTitulo", "<strong>Seja bem vindo!</strong><hr />");
                alert.Add("sucesso", "Detectados que é sua primeira vez em nosso sistema.<br />Nesta tela do sistema você ira completar seus dados cadastrais, este é um passo muito importante<br />" +
                    " pois sem concluílo você não poderá utilizar as outras funcionalidades de nosso sistema. Após conpletado este passo voce já estara apto a usar todos os nossos recursos disponíveis.");
                alert.Show();
            }
            if (this.Request.QueryString["paciente"] != null)
            {
                this.Paciente.LoadModel(new RzCorportativo.Lib.Usuario() { UsuarioId = EFramework.Web.TypeExtension.IntExtension.Parse(this.Request.QueryString["paciente"], 0) });
            }
        }

        protected void salvar_Click(object sender, EventArgs e)
        {
            RzCorportativo.Lib.Usuario usuario = new RzCorportativo.Lib.Usuario();
            usuario = this.Paciente.Model;
            Alert alert = new Alert("erroGeral", this);
            try
            {
                if (!this.Paciente.IsValid)
                {
                    var msgs = this.Paciente.GetErrors();
                    alert.AlertType = AlertType.Error;
                    int i = 0;
                    foreach (var item in msgs)
                    {
                        alert.Add(i.ToString(), item);
                        i += 1;
                    }
                    return;
                }
                bool result = false;
                usuario.Login = AppSession.Login;
                if (usuario.IsNew)
                {
                    Lib.Curriculo curriculo = new Lib.Curriculo();
                    curriculo.PretencaoSalarial = 0;
                    curriculo.Usuario = usuario;
                    if (usuario.Login.TipoLogin == Lib.TipoLogin.Candidato)
                        result = curriculo.Salvar();
                    else
                        result = usuario.Salvar();
                }
                else
                    result = usuario.Salvar();
                if (result && "nc".Equals(this.Request["op"]))
                {
                    BasePage.CurrentLogin.Usuario = usuario;
                    Session["op"] = "s";
                    BasePage.CurrentLogin.Usuario = usuario;
                    BasePage.CurrentLogin.UsuarioId = usuario.UsuarioId;
                    if (BasePage.CurrentLogin.TipoLogin == Lib.TipoLogin.Interno)
                        this.ClientScript.RegisterStartupScript(this.GetType(), "error", "window.location='" + ResolveUrl("~/Views/Consulta/Pacientes.aspx") + "'", true);
                    else
                    {
                        this.ClientScript.RegisterStartupScript(this.GetType(), "error", "window.location='" + this.ResolveUrl("~/Default.aspx?op=ccs") + "'", true);
                    }
                }
                else if(result)
                {
                    this.Paciente.SalvarFoto();
                    alert.AlertType = AlertType.Success;
                    alert.Add("s", "Dados salvos com sucesso!");
                    alert.Show();
                }
                else
                {
                    alert.AlertType = AlertType.Error;
                    alert.Add("v", "Desculpe isso é vergonhoso!");
                    alert.Add("f", "Falha ao tentar salvar seus dados tente mais tarde novamente!");
                    alert.Show();
                }
            }
            catch (Exception ex)
            {
                alert.AlertType = AlertType.Error;
                alert.Add("exception", ex.Message);
            }
            finally
            {
                if (alert.HasMessage)
                {
                    alert.Show();
                }
            }
        }

        [WebMethod]
        public static object ListarCidade(string termo)
        {
            RzCorportativo.Lib.Cidade parans = new RzCorportativo.Lib.Cidade();
            if (termo.Contains(','))
            {
                int i = 0;
                termo.Split(',').ToList().ForEach(f =>
                {
                    if (i == 0)
                        parans.Nome = (f ?? string.Empty).TrimStart();
                    else if (i == 1)
                        parans.UF = new RzCorportativo.Lib.Uf()
                        {
                            UF = (f ?? string.Empty).ToUpper().TrimStart()
                        };
                    i += 1;
                });
            }
            else
                parans.Nome = termo;
            var lista = RzCorportativo.Lib.Cidade.Listar(parans);
            return lista.Select(s => new { value = s.Nome, label = s.Nome, CidadeId = s.CidadeId, Nome = s.Nome, UF = s.UF}).ToList();
        }
    }
}